home *** CD-ROM | disk | FTP | other *** search
/ Softdisk Supreme / Softdisk Supreme.iso / pc / DSK Files / 0-49 / SD004b.dsk / GRADE.CURVER.bas < prev    next >
BASIC Source File  |  2003-06-12  |  12KB  |  249 lines

  1. 1000  REM  CURVE ROUTINE PROGRAM
  2. 1010  REM      WRITTEN BY
  3. 1020  REM      GERALD GONDERINGER
  4. 1030  REM      ST. BONIFACE
  5. 1040  REM      ELGIN NE. 68636
  6. 1050  REM      **APPLESOFT BASIC**
  7. 1060  HOME : PRINT : PRINT : PRINT "--------------------------------------                                                                                      C U R V E    R O U T I N E "
  8. 1070  PRINT : PRINT : PRINT : PRINT : PRINT "      BY GERALD GONDERINGER"
  9. 1080  PRINT : PRINT : PRINT "--------------------------------------"
  10. 1090  FOR GG = 1 TO 1000: NEXT 
  11. 1100 D$ =  CHR$(4): DIM NAME$(70)
  12. 1110  VTAB 23: INPUT "  DO YOU NEED INSTRUCTIONS (Y/N)?";Q$: IF Q$ = "N"  THEN  GOTO 1260
  13. 1120  REM  INSTRUCTIONS
  14. 1130  HOME : PRINT : PRINT "THIS PROGRAM IS TO HELP SIMPLIFY        GRADING FOR TEACHERS.  IT HAS SEVERAL   OPTIONS."
  15. 1140  PRINT : PRINT "THE TEACHER MAY ENTER ALL THE RAW       SCORES AT ONE TIME OR ENTER SOME OF     THEM, AND THEN WRITE DOWN THE VARIABLES LISTED AND CONTINUE WITH THE REST OF    THE RAW SCORES AT A LATER TIME."
  16. 1150  PRINT "YOU ARE ALSO ABLE TO SAVE YOUR SCORES   ON DISK.  YOU MAY ADD TO THEM AT A      LATER TIME IF YOU WISH."
  17. 1160  PRINT : PRINT "WHEN YOU ARE FINISHED ENTERING THE      LIST OF RAW SCORES, PLEASE ENTER -1."
  18. 1170  PRINT : PRINT "THIS PROGRAM WILL GIVE YOU THE NATURAL  PERCENT (THE PERCENT OF NUMBER CORRECT  WITHOUT ANY CURVE) AND THE NORMAL CURVE PERCENT AND SCORE."
  19. 1180  PRINT : INPUT "   <<<PRESS RETURN>>>";Q$
  20. 1190  HOME : PRINT : PRINT 
  21. 1200  PRINT "GRADING BY STANDARD CURVE IS BENEFITIAL ONLY IF THERE IS A WIDE SPREAD OR       VARIANCE IN THE SCORES. IN OTHER CASES  IT IS MORE BENEFITIAL TO GRADE BY       NATURAL OR ADJUSTED (CURVE) PERCENT."
  22. 1210  PRINT "THIS IS ESPECIALLY THE CASE WHEN        STUDENTS HAVE DONE WELL ON A TEST AND   THE MEAN IS HIGH."
  23. 1220  PRINT : PRINT "IF YOU WOULD LIKE TO DEVELOP YOUR OWN   CURVE, ANSWER 'NO' AT THE END OF THE    RANKING WHEN ASKED IF YOU WISH TO SEE   THE RANKING AGAIN, AND THE COMPUTER     WILL ALLOW YOU TO ADJUST THE CURVE": PRINT 
  24. 1230  PRINT : PRINT "THIS PROGRAM HAS TRIED TO PRESERVE      FLEXIBILITY AT EVERY POINT. PERHAPS     IT WILL HELP YOU TAKE THE DRUGERY OUT   OF GRADING ASSIGNMENTS AND TESTS."
  25. 1240  PRINT : INPUT "    <<<PRESS RETURN>>>";Q$: GOTO 1260
  26. 1250  REM  INITIAL QUESTIONS
  27. 1260  HOME : DIM X(100):AD = 0
  28. 1270  INPUT "  WHAT IS THE HIGHEST                     POSSIBLE SCORE ?  ";U$:U =  VAL(U$)
  29. 1280  INPUT "  IS THIS THE FIRST ENTRY OF RAW          SCORES (Y/N)?  ";Q$: IF Q$ = "Y"  THEN  GOTO 1320
  30. 1290  INPUT "  DO YOU WISH TO ENTER DATA FROM THE      DISK (Y/N)?";Q$: IF Q$ = "N"  THEN  GOTO 1640
  31. 1300  HOME : PRINT D$;"CATALOG": PRINT : PRINT 
  32. 1310  INPUT "  WHAT IS THE NAME                        OF THE FILE ?  ";NAME$: GOTO 1470
  33. 1320  INPUT "  WOULD YOU LIKE TO RECORD THIS DATA      ON DISK FOR LATER USE (Y/N)?";Q$: IF Q$ = "N"  THEN QU = 0: GOTO 1760
  34. 1330  REM  WRITING FILE
  35. 1340  INPUT "  WHAT WILL BE THE NAME FOR THIS          RECORD ON DISK? ";NAME$:QU = 1
  36. 1350  INPUT "  LIST SCORE   ";X$:X =  VAL(X$)
  37. 1360 G = G +1:X(G) = X
  38. 1370  IF X <0  THEN  GOTO 1390
  39. 1380 T = T +X:D = D +X ^2:N = N +1: GOTO 1350
  40. 1390  PRINT D$;"OPEN";NAME$;",L4"
  41. 1400  FOR G = 1 TO N +1
  42. 1410  IF G = N +1  THEN X(G) =  -1
  43. 1420  PRINT D$;"WRITE";NAME$;",R";G
  44. 1430  PRINT X(G)
  45. 1440  NEXT G
  46. 1450  PRINT D$;"CLOSE";NAME$
  47. 1460  GOSUB 1880: GOTO 2200
  48. 1470  REM  OPENING OLD FILE
  49. 1480 G = 0
  50. 1490  PRINT D$;"OPEN";NAME$;",L4"
  51. 1500 G = G +1
  52. 1510  PRINT D$;"READ";NAME$;",R";G
  53. 1520  INPUT NAME$(G)
  54. 1530  IF  VAL(NAME$(G)) <0  THEN G = G -1: GOTO 1620
  55. 1540 X(G) =  VAL(NAME$(G))
  56. 1550  PRINT "SCORE ";X(G)
  57. 1560 X = X(G)
  58. 1570  IF X < = 0  THEN  GOTO 1620
  59. 1580 T = T +X
  60. 1590 D = D +X ^2
  61. 1600 N = N +1
  62. 1610  GOTO 1500
  63. 1620 M = T/N:V = D/N -M ^2:S =  SQR(V)
  64. 1630  PRINT D$;"CLOSE";NAME$: PRINT "  IF YOU WISH TO ADD TO THESE YOU MAY     ENTER -1 WHEN FINISHED.  YOU MAY ALSO   SAVE THIS IN A NEW FILE.": GOTO 1320
  65. 1640  INPUT "  ENTER ADJUSTMENT TO NATURAL PERCENT     IF NONE AT THIS TIME, ENTER '0' ";AD$:AD =  VAL(AD$)
  66. 1650  REM  WORKING ONLY WITH      STANDARD DEVIATION AND NOT  RAW SCORES
  67. 1660  INPUT "  HAS THE MEAN AND STANDARD DEVIATION     BE COMPUTED (Y/N)?";Q$: IF Q$ = "N"  THEN  GOTO 1700
  68. 1670  INPUT "  WHAT IS THE VALUE OF THE MEAN? ";M$:M =  VAL(M$)
  69. 1680  INPUT "  WHAT IS THE VALUE OF THE STANDARD       DEVIATION ?  ";S$:S =  VAL(S$)
  70. 1690  GOTO 2030
  71. 1700  INPUT "  WHAT IS THE N VALUE? ";N$:N =  VAL(N$)
  72. 1710  INPUT "  WHAT IS THE T VALUE?  ";T$:T =  VAL(T$)
  73. 1720  INPUT "  WHAT IS THE D VALUE?  ";D$:D =  VAL(D$)
  74. 1730  INPUT "  WHAT IS THE MEAN VALUE?  ";M$:M =  VAL(M$)
  75. 1740  GOSUB 1800
  76. 1750  GOTO 2030
  77. 1760  INPUT "  WOULD YOU LIKE ALL THE SCORES RANKED    WITH THEIR VALUES (Y/N)?";Q$: IF Q$ = "N"  THEN  GOTO 1780
  78. 1770  GOSUB 1800: GOTO 2200
  79. 1780  GOSUB 1800
  80. 1790  GOTO 2030
  81. 1800  REM  SUBROUTINE TO COMPUTE STANDARD DEVIATION
  82. 1805 G = G +1:X = X +1
  83. 1810  INPUT "   LIST SCORE    ";X$:X =  VAL(X$): IF X = 0  OR X >U  THEN 1810
  84. 1820 X(G) = X: IF X <0  THEN 1880
  85. 1830 G = G +1
  86. 1840 T = T +X
  87. 1850 D = D +X ^2
  88. 1860 N = N +1
  89. 1870  GOTO 1810
  90. 1880  REM  COMPUTE MEAN, VARIANCE, STND DEVIATION
  91. 1890 M = T/N
  92. 1900 V = D/N -M ^2
  93. 1910 S =  SQR(V)
  94. 1920  REM  PRINT RESULTS
  95. 1930  GOSUB 3380
  96. 1940  PRINT "  NUMBER OF SCORES ";N
  97. 1950  PRINT "  MEAN OF SCORE    ";M
  98. 1960  PRINT "  VARIANCE IS      ";V
  99. 1970  PRINT "  STNDRD DEVIATION ";S
  100. 1980  PRINT "  T VALUE IS ";T
  101. 1990  PRINT "  D VALUE IS ";D
  102. 2000  PRINT : PRINT : PRINT 
  103. 2010  PR# 0
  104. 2020  RETURN 
  105. 2030  REM  SUBROUTINE TO DISPLAY INDIVIDUAL SCORES
  106. 2050  PRINT : PRINT "ENTER '-1' TO RETURN TO MAIN PART OF    PROGRAM"
  107. 2060  PRINT : INPUT "---------------PRINT SCORE       ";Y$:Y =  VAL(Y$)
  108. 2070  IF Y =  -1  THEN  PR# 0: GOTO 2300
  109. 2080 YZ = Y
  110. 2090  PRINT "  THE NATURAL PERCENT SCORE IS   ";:Y =  INT(100 *(1 -((U -Y)/U))): PRINT Y;: GOSUB 2860: PRINT " ";L$
  111. 2100  IF AD = 0  THEN  GOTO 2120
  112. 2110  PRINT "  THE ADJUSTED PERCENT SCORE IS  ";:Y = Y +AD: PRINT Y;: GOSUB 2860: PRINT " ";L$
  113. 2120 Z = (YZ -M)/S
  114. 2130  PRINT "  Z SCORE IS  ";Z
  115. 2140  GOSUB 3000
  116. 2150  PRINT "  THE STANDARD CURVE SCORE IS    ";: HTAB 34: PRINT P$;:Y =  VAL(P$): GOSUB 2860: PRINT " ";L$
  117. 2160  GOTO 2060
  118. 2170  RETURN 
  119. 2180  REM  CONVERTINT Z SCORES TO PERCENT SCORES. Z IS THE    MEASURE OF THE STANDARD     DEVIATIONS ABOVE OR BELOW   THE MEAN
  120. 2190  GOSUB 1800: GOTO 1320
  121. 2200  REM  RANKING SUBROUTINE
  122. 2210  PRINT : PRINT : PRINT : PRINT "         ";: INVERSE : PRINT "  NOW SORTING  ": NORMAL 
  123. 2220  FOR W = 1 TO N -1
  124. 2230  FOR E = W +1 TO N
  125. 2240  IF X(W) > = X(E)  THEN 2280
  126. 2250 B = X(W)
  127. 2260 X(W) = X(E)
  128. 2270 X(E) = B
  129. 2280  NEXT E
  130. 2290  NEXT W
  131. 2300  PRINT : PRINT : PRINT "  WOULD YOU LIKE THE FREQUENCY OF EACH    SCORE GRAPHED (Y/N)?": GET Q$: IF Q$ = "N"  THEN  GOTO 2490
  132. 2310  GOSUB 3380: REM  GRAPHING ROUTING
  133. 2320  HOME 
  134. 2330  PRINT "======================================="
  135. 2340  FOR W = 1 TO N +1
  136. 2350 X(W) =  INT(X(W))
  137. 2360  IF X(W -1) = X(W)  THEN  PRINT "<*>";:Y = X(W): NEXT W
  138. 2370  IF W = 1  THEN Y = X(W): GOTO 2440
  139. 2380  PRINT : HTAB 1
  140. 2390 Y = X(W)
  141. 2400  IF X(W) <0  THEN  GOTO 2460
  142. 2410  IF X(W -1) -X(W) >7  THEN  GOTO 2440
  143. 2420 CH = X(W -1) -Y: IF CH = 1  OR 0  THEN  GOTO 2440
  144. 2430  FOR GA = 1 TO CH -1: PRINT X(W -1) -GA;: HTAB 5: PRINT "!": HTAB 1: NEXT GA
  145. 2440  PRINT Y;: HTAB 5: PRINT "! <*>";
  146. 2450  NEXT W
  147. 2460  HTAB 1: PRINT "======================================="
  148. 2470  PRINT : PRINT "         ";NAME$
  149. 2480  PR# 0
  150. 2490  GOSUB 3380: PRINT : PRINT : PRINT 
  151. 2500  REM  DISPLAY OF SCORES
  152. 2510  IF AD < >0  THEN  GOTO 2540
  153. 2520  PRINT "SCORE  NATURAL  STANDARD ": PRINT "       PERCENT  CURVE PERCENT ": PRINT "======================================="
  154. 2530  GOTO 2550
  155. 2540  PRINT "SCORE NATURAL  ADJUSTED STANDARD": PRINT "      PERCENT  PERCENT  CURVE": PRINT "======================================="
  156. 2550 COUNTER = 0
  157. 2560  FOR W = 1 TO N
  158. 2570 Y = X(W)
  159. 2580  IF X(W) <0  THEN 2690
  160. 2590 Z = (Y -M)/S
  161. 2600  IF AD < >0  THEN  GOTO 2640
  162. 2610  PRINT Y;: HTAB 9:Y =  INT(100 *(1 -((U -Y)/U))): PRINT Y;: GOSUB 2860: PRINT " ";L$;
  163. 2620  GOSUB 3000: HTAB 19: PRINT P$;:Y =  VAL(P$): GOSUB 2860: PRINT " ";L$
  164. 2630  GOTO 2655
  165. 2640  PRINT Y;: HTAB 9:Y =  INT(100 *(1 -((U -Y)/U))): PRINT Y;: GOSUB 2860: PRINT " ";L$;
  166. 2650  HTAB 18: PRINT Y +AD;:Y = Y +AD: GOSUB 2860: PRINT " ";L$;: GOSUB 3000: HTAB 27: PRINT P$;:Y =  VAL(P$): GOSUB 2860: PRINT " ";L$
  167. 2655  IF PR$ = "Y"  THEN 2680
  168. 2660 COUNTER = COUNTER +1
  169. 2670  IF COUNTER >20  THEN  GOTO 2720
  170. 2680  NEXT W
  171. 2690  PR# 0: PRINT : PRINT "  WOULD YOU LIKE TO SEE THE               SCORES AGAIN(Y/N)?": GET Q$: IF Q$ < >"N"  THEN  GOTO 2300
  172. 2700  GOTO 2740
  173. 2710  IF PR$ = "Y"  THEN COUNTER = 0: GOTO 2680
  174. 2720  GET AN$:COUNTER = 0: GOTO 2680
  175. 2730  REM  DISPLAY OF STANDARD    DEVIATION AND MEAN AT END   OF SCORES DISPLAY
  176. 2740  PRINT "STANDARD DEVIATION IS ";S
  177. 2750  PRINT "THE MEAN IS           ";M
  178. 2760  REM  ADJUSTING NATURAL      PERCENT
  179. 2770  PRINT : PRINT : PRINT "  WOULD YOU LIKE TO ADJUST THE NATURAL    PERCENT GRADE(Y/N)?": GET Q$: IF Q$ = "N"  THEN  GOTO 2840
  180. 2780  PRINT : PRINT : INPUT "  HOW MANY PERCENTAGE POINTS WOULD YOU    LIKE TO ADD TO EACH SCORE IN THE        NATURAL PERCENT COLUMN? (ENTER PLUS     OR MINUS NUMBER, E.G. +4)";AD$
  181. 2790 AD =  VAL(AD$)
  182. 2800  GOTO 2490
  183. 2810  PRINT : PRINT : PRINT " WOULD YOU LIKE TO ENTER EACH SCORE      SEPARATELY FOR THE SCORE(Y/N)?": GET Q$: IF Q$ < >"N"  THEN  GOTO 2830
  184. 2820  IF Q$ = "N"  THEN  GOTO 2850
  185. 2830  GOTO 2030
  186. 2840  GOTO 2810
  187. 2850  END 
  188. 2860  REM  SUBROUTINE TO CONVERT  PERCENTS TO LETTER GRADES
  189. 2865  REM  YOU WANT TO CHANGE      THE CONVERSION OF           PERCENTS TO LETTER          GRADES.
  190. 2870  IF Y >97  THEN L$ = "A+": RETURN 
  191. 2880  IF Y >94  THEN L$ = "A": RETURN 
  192. 2890  IF Y >92  THEN L$ = "A-": RETURN 
  193. 2900  IF Y >90  THEN L$ = "B+": RETURN 
  194. 2910  IF Y >87  THEN L$ = "B": RETURN 
  195. 2920  IF Y >85  THEN L$ = "B-": RETURN 
  196. 2930  IF Y >82  THEN L$ = "C+": RETURN 
  197. 2940  IF Y >80  THEN L$ = "C": RETURN 
  198. 2950  IF Y >77  THEN L$ = "C-": RETURN 
  199. 2960  IF Y >74  THEN L$ = "D+": RETURN 
  200. 2970  IF Y >72  THEN L$ = "D": RETURN 
  201. 2980  IF Y >69  THEN L$ = "D-": RETURN 
  202. 2990  IF Y >0  THEN L$ = "F": RETURN 
  203. 3000  IF Z > +2.3  THEN P$ = "99": RETURN 
  204. 3010  IF Z > +1.82  THEN P$ = "98": RETURN 
  205. 3020  IF Z > +1.71  THEN P$ = "97": RETURN 
  206. 3030  IF Z > +1.59  THEN P$ = "96": RETURN 
  207. 3040  IF Z > +1.48  THEN P$ = "95": RETURN 
  208. 3050  IF Z > +1.37  THEN P$ = "94": RETURN 
  209. 3060  IF Z > +1.25  THEN P$ = "93": RETURN 
  210. 3070  IF Z > +1.14  THEN P$ = "92": RETURN 
  211. 3080  IF Z > +1.02  THEN P$ = "91": RETURN 
  212. 3090  IF Z > +0.92  THEN P$ = "90": RETURN 
  213. 3100  IF Z > +0.82  THEN P$ = "89": RETURN 
  214. 3110  IF Z > +.77  THEN P$ = "88": RETURN 
  215. 3120  IF Z > +.71  THEN P$ = "87": RETURN 
  216. 3130  IF Z > +.66  THEN P$ = "86": RETURN 
  217. 3140  IF Z > +.53  THEN P$ = "85": RETURN 
  218. 3150  IF Z > +.39  THEN P$ = "84": RETURN 
  219. 3160  IF Z > +.25  THEN P$ = "83": RETURN 
  220. 3170  IF Z >0  THEN P$ = "82": RETURN 
  221. 3180  IF Z > -.26  THEN P$ = "81": RETURN 
  222. 3190  IF Z > -.39  THEN P$ = "80": RETURN 
  223. 3200  IF Z > -.53  THEN P$ = "79": RETURN 
  224. 3210  IF Z > -.69  THEN P$ = "78": RETURN 
  225. 3220  IF Z > -.72  THEN P$ = "77": RETURN 
  226. 3230  IF Z > -.77  THEN P$ = "76": RETURN 
  227. 3240  IF Z > -.86  THEN P$ = "75": RETURN 
  228. 3250  IF Z > -.96  THEN P$ = "74": RETURN 
  229. 3260  IF Z > -1.05  THEN P$ = "73": RETURN 
  230. 3270  IF Z > -1.10  THEN P$ = "72": RETURN 
  231. 3280  IF Z > -1.15  THEN P$ = "71": RETURN 
  232. 3290  IF Z > -1.25  THEN P$ = "70": RETURN 
  233. 3300  IF Z > -1.37  THEN P$ = "69": RETURN 
  234. 3310  IF Z > -1.48  THEN P$ = "68": RETURN 
  235. 3320  IF Z > -1.59  THEN P$ = "67": RETURN 
  236. 3330  IF Z > -1.71  THEN P$ = "66": RETURN 
  237. 3340  IF Z > -1.82  THEN P$ = "65": RETURN 
  238. 3350  IF Z > -2.06  THEN P$ = "64": RETURN 
  239. 3360  IF Z < -2.06  THEN P$ = "63": RETURN 
  240. 3370  REM  SUBROUTINE TO TURN ON/ OFF THE PRINTER
  241. 3380  REM   SUBROUTINE TO TURN ON/             OFF THE PRINTER  
  242. 3390  PRINT : PRINT "   TURN PRINTER ON (Y/N)??";: GET PR$
  243. 3400  PRINT : PRINT 
  244. 3410  IF PR$ = "N"  THEN  PRINT : PRINT "  THE PRINTER IS ";: FLASH : PRINT " OFF ": NORMAL : PRINT : PRINT 
  245. 3420  IF PR$ = "N"  THEN  PR# 0: RETURN 
  246. 3430  PRINT : PRINT "  THE PRINTER IS ";: FLASH : PRINT " ON ": NORMAL 
  247. 3440  FOR DLAY = 1 TO 1000: NEXT 
  248. 3450  PR# 1
  249. 3460  RETURN